
// FovDrivenRadiosityDlg.h : header file
//

#pragma once

#include "FovDrivenRadiosity.h"
#include "afxwin.h"
#include "afxcmn.h"
#include <string>
#include <vector>

class Parameters;

class WindowSize
{
public:
	WindowSize() {}
	WindowSize(int w, int h) {width = w; height = h;}
	int width, height;
};

// CFovDrivenRadiosityDlg dialog
class CFovDrivenRadiosityDlg : public CDialogEx
{
	// Construction
public:
	CFovDrivenRadiosityDlg(CWnd* pParent = NULL);	// standard constructor

	// Dialog Data
	enum { IDD = IDD_FOVDRIVENRADIOSITY_DIALOG };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support

	// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	virtual BOOL OnInitDialog();
	virtual void OnOK();

	afx_msg void OnPaint();
	afx_msg void OnClose();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnBnClickedRun();
	afx_msg void OnBnClickedButtonMeshFilename();
	afx_msg void OnBnClickedRadio();
	afx_msg void OnBnClickedCheckFullscreen();
	afx_msg void OnBnClickedCheckAmbient();
	afx_msg void OnBnClickedCheckVisualization();
	afx_msg void OnBnClickedCheckDualView();
	afx_msg void OnEnChangeEditMeshFilename();
	afx_msg void OnNMCustomdrawSliderWindow(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg void OnNMCustomdrawSliderItemBuffer(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg void OnNMCustomdrawSliderSubdivision(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg void OnNMCustomdrawSliderFPS(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg void OnNMCustomdrawSliderShootLevel(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg void OnNMCustomdrawSliderFovAngle(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg void OnNMCustomdrawSliderFovDecayInterval(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg void OnNMCustomdrawSliderUnshotMipmapShootLevel(NMHDR *pNMHDR, LRESULT *pResult);
	DECLARE_MESSAGE_MAP()

protected:
	CSliderCtrl _windowResolutionSlider;
	CSliderCtrl _itemBufferSlider;
	CSliderCtrl _subdivisionSlider;
	CSliderCtrl _fpsSlider;
	CSliderCtrl _shootLevelSlider;
	CSliderCtrl _fovAngleSlider;
	CSliderCtrl _fovDecayIntervalSlider;
	CSliderCtrl _unshotMipmapShootLevelSlider;

	Parameters *_parameters;
	int _radiosityAlgorithm;
	CString _meshFilename;
	BOOL _fullscreen;
	BOOL _ambient;
	BOOL _visualization;
	BOOL _dualView;
	std::vector<WindowSize> _windowSizes;

};
